package com.coolcard.framework.base;

import lombok.RequiredArgsConstructor;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

/**
 * 通用服务基类
 * - 提供 CRUD 基本服务
 *
 * @param <E> 实体类
 * @param <R> 实体仓库类
 */
@RequiredArgsConstructor
public class BaseService<E, R extends JpaRepository<E, Long>> {

    private final R repository;  // 仓库实例

    // 获取数据列表
    public List<E> list() {
        if (repository != null) {
            return repository.findAll();
        }
        return null;
    }

    // 获取单条数据
    public E get(Long id) {
        // 判断ID是否为数字
        if (repository != null) {
            return repository.findById(id).get();
        }
        return null;
    }

    // 新增数据
    public E create(E entity) {
        if (repository != null) {
            return repository.save(entity);
        }
        return null;
    }

    // 更新数据
    public E update(E entity) {
        if (repository != null) {
            return repository.save(entity);
        }
        return null;
    }

    // 删除数据
    public Integer delete(Long id) {
        if (repository != null) {
            repository.deleteById(id);
            return 1;
        }
        return 0;
    }
}
